#ifndef DOUBKYLINKLIST_H_INCLUDED
#define DOUBKYLINKLIST_H_INCLUDED

/****************************************
 *  Project： DoublyLinkList 双向链表
 *  Function: 在单链表的基础上增加了前缀节点,一定程度上提升了查找元素的速度
 *  Description: 在查找元素时,可以反向查找前缀节点
 *  Author: coder-itl
 ****************************************
 *  Copyright 2021/10/11 by coder-itl
 ****************************************/

#include "stdio.h"
#include "stdlib.h"
#include "DataElement.h"

/**
 * 双向链表的节点,包含一个数据域,两个指针域
 * data: 数据域
 * prior: 前驱指针域
 * next: 后继指针域
 */
typedef struct DoublyNode {
    ElementType data;
    struct DoublyNode *prior;
    struct DoublyNode *next;
} DoublyNode;

/**
 * 双向链表
 */
typedef struct DoublyLinkList {
    int length;
    DoublyNode *next;
} DoublyLinkList;

/**
 *
 * @param dList
 * @param position
 * @param element
 */
void InsertDoublyLinkList(DoublyLinkList *dList, int position, ElementType element);

/**
 *
 * @param dList
 */
void PrintDoublyLinkList(DoublyLinkList *dList);

#endif // DOUBKYLINKLIST_H_INCLUDED
